﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;

class Date
{
public:
	//void Init(Date* const this, int year, int month, int day)
	void Init(int year, int month, int day)
	{
		_year = year;
		_month = month;
		_day = day;
	}

	//void Print(Date* const this)
	void Print()
	{
		//cout <<this-> _year << "/" << this->_month << "/" <<this-> _day << endl;
		cout << _year << "/" << _month << "/" << _day << endl;
	}
private:
	//只是声明，没有定义(开空间)
	//// this->_year = year;
	int _year;
	int _month;
	int _day;
};

int main()
{
	Date d1;
	//d1.Init(&d1,2024, 11, 13);
	d1.Init(2024, 11, 13);
	//	d1.Print(&d1);
	d1.Print();

	Date d2;
	//	d2.Init(&d2,2024, 11, 14);
	d2.Init(2024, 11, 14);
	// d2.Print(&d2);
	d2.Print();
	return 0;
}

// 计算⼀下A/B/C实例化的对象是多⼤？
//class A
//{
//public:
//	void Print()
//	{
//		cout << _ch << endl;
//	}
//private:
//	char _ch;
//	int _i;
//};
//class B
//{
//public:
//	void Print()
//	{
//		//...
//	}
//};
//class C
//{};
//int main()
//{
//	A a;
//	B b;
//	C c;
//	cout << sizeof(a) << endl;
//	cout << sizeof(b) << endl;
//	cout << sizeof(c) << endl;
//	return 0;
//}

//class Date
//{
//public:
//	void Init(int year ,int month,int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	void Print()
//	{
//		cout << _year << "/" << _month << "/" << _day << endl;
//	}
//private:
//	//只是声明，没有定义(开空间)
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	Date d1;
//	d1.Init(2024, 11, 13);
//	d1.Print();
//
//	Date d2;
//	d2.Init(2024, 11, 14);
//	d2.Print();
//	return 0;
//}


//#include "Stack.h"

//int main()
//{
//	//实例化对象 --> 开空间 
//	Stack st1;
//	Stack st2;
//	Stack st3;
//	return 0;
//}
//class Stack 
//{
//public:
//	void Init(int n)
//	{
//
//	}
//};
//
//class Queue
//{
//public:
//	void Init(int n)
//	{
//
//	}
//};

//class Date
//{
//	//class默认为private
//public:
//	void Init(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	Date d1;
//	d1.Init(2024,11,13);
//	return 0;
//}

//C++升级struct 升级成了类
//1.类里面可以定义函数
//2.struct 名称就可以代表类型

//C++兼容C中struct 的用法
//typedef struct ListNodeC
//{
//	struct ListNodeC* next;
//	int val;
//}LTNode;
//
////不再需要typedef,ListNodeCpp就可以代表类型
//struct ListNodeCpp
//{
//	void Init(int x) {
//		next = nullptr;
//		val = x;
//	}
//	ListNodeCpp* next;
//	int val;
//};
//
//int main()
//{
//	LTNode node;
//	struct ListNodeC* node2;
//	ListNodeCpp node3;
//	return 0;
//}

//class Date
//{
//	void Init(int year, int month, int day)
//	{
//		_year = year;
//		_month = month;
//		_day = day;
//	}
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//
//	return 0;
//}

//void f(int x)
//{
//	cout << "f(int x)" << endl;
//}
//void f(int* ptr)
//{
//	cout << "f(int* ptr)" << endl;
//}
//int main()
//{
//	f(0);
//	f(NULL);
//	f((int*)NULL);
//	f(nullptr);
//	return 0;
//}

//#include "F.h"
//int main()
//{
//	//链接错误:	LNK2019	无法解析的外部符号 "void __cdecl f(int)" (? f@@YAXH@Z)，函数 main 中引用了该符号
//
//	//f(10);
//	Func();
//	return 0;
//}